home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / share / catman / p_man / cat3 / librw / RWTValHashMap.z / RWTValHashMap
Encoding:
Text File  |  1998-10-30  |  22.4 KB  |  529 lines

  1.  
  2.  
  3.  
  4. RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMaaaapppp((((3333CCCC++++++++))))                                        RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMaaaapppp((((3333CCCC++++++++))))
  5.  
  6.  
  7.  
  8. NNNNaaaammmmeeee
  9.      RWTValHashMap<K,T,H,EQ> - Rogue Wave library class
  10.  
  11. SSSSyyyynnnnooooppppssssiiiissss
  12.               #include <rw/tvhdict.h>
  13.           RWTValHashMap<K,T,H,EQ> m;
  14.  
  15.  
  16.  
  17. PPPPlllleeeeaaaasssseeee NNNNooootttteeee!!!!
  18.  
  19.  
  20.  
  21.      IIIIffff yyyyoooouuuu hhhhaaaavvvveeee tttthhhheeee SSSSttttaaaannnnddddaaaarrrrdddd CCCC++++++++ LLLLiiiibbbbrrrraaaarrrryyyy,,,, uuuusssseeee tttthhhheeee iiiinnnntttteeeerrrrffffaaaacccceeee ddddeeeessssccccrrrriiiibbbbeeeedddd hhhheeeerrrreeee....
  22.      OOOOtttthhhheeeerrrrwwwwiiiisssseeee,,,, uuuusssseeee tttthhhheeee iiiinnnntttteeeerrrrffffaaaacccceeee ffffoooorrrr RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhDDDDiiiiccccttttiiiioooonnnnaaaarrrryyyy described in
  23.      Appendix A.
  24.  
  25.  
  26. DDDDeeeessssccccrrrriiiippppttttiiiioooonnnn
  27.      This class maintains a collection of keys, each with an associated item
  28.      of type TTTT.  These pairs are stored according to a hash object of type HHHH.
  29.      HHHH must provide a hash function on elements of type KKKK via a public member
  30.           uuuunnnnssssiiiiggggnnnneeeedddd lllloooonnnngggg ooooppppeeeerrrraaaattttoooorrrr(((())))((((ccccoooonnnnsssstttt KKKK&&&& xxxx)))) Equivalent keys within the
  31.      collection will be grouped together based on an equality object of type
  32.      EEEEQQQQ.  EEEEQQQQ must ensure this grouping via public member
  33.           bbbboooooooollll ooooppppeeeerrrraaaattttoooorrrr(((())))((((ccccoooonnnnsssstttt KKKK&&&& xxxx,,,, ccccoooonnnnsssstttt KKKK&&&& yyyy)))) which should return ttttrrrruuuueeee if
  34.      xxxx and yyyy are equivalent.  RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>> will not accept a key
  35.      that compares equal to any key already in the collection.
  36.      (RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>> may contain multiple keys that compare
  37.      equal to each other.)  Equality is based on the equality object and not
  38.      on the ======== operator.
  39.  
  40. PPPPeeeerrrrssssiiiisssstttteeeennnncccceeee
  41.      Isomorphic
  42.  
  43. RRRReeeellllaaaatttteeeedddd CCCCllllaaaasssssssseeeessss
  44.      Class RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMuuuullllttttiiiiMMMMaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>> offers the same interface to a
  45.      collection that accepts multiple keys that compare equal to each other.
  46.      Class rrrrwwww____hhhhaaaasssshhhhmmmmaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>> is the C++-standard compliant collection that
  47.      serves as the underlying implementation for this collection.
  48.  
  49. PPPPuuuubbbblllliiiicccc TTTTyyyyppppeeeeddddeeeeffffssss
  50.               typedef rw_hashmap<K,T,H,EQ>                   container_type;
  51.           typedef container_type::iterator               iterator;
  52.           typedef container_type::const_iterator         const_iterator;
  53.           typedef container_type::size_type              size_type;
  54.           typedef pair <const K,T>                       value_type;
  55.           typedef K                                      key_type;
  56.           typedef T                                      data_type;
  57.           typedef pair <const K,T>&                      reference;
  58.           typedef pair <const K,T>&                      const_reference;
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMaaaapppp((((3333CCCC++++++++))))                                        RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMaaaapppp((((3333CCCC++++++++))))
  71.  
  72.  
  73.  
  74. PPPPuuuubbbblllliiiicccc CCCCoooonnnnssssttttrrrruuuuccccttttoooorrrrssss
  75.               RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>>();
  76.  
  77.  
  78.      Constructs an empty map.
  79.  
  80.               RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>>(const rw_hashmap<K,T,H,EQ>& m);
  81.  
  82.  
  83.      Constructs a map by copying all elements of mmmm.
  84.  
  85.               RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>>
  86.           (const H& h, size_type sz = RWDEFAULT_CAPACITY);
  87.  
  88.  
  89.      Creates an empty hashed map which uses the hash object hhhh and has an
  90.      initial capacity of sssszzzz.
  91.  
  92.               RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>>(const RWTValHashMap<K,T,H,EQ>& rwm);
  93.  
  94.  
  95.      Copy constructor.
  96.  
  97.               RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMaaaapppp<<<<KKKK,,,,TTTT,,,,HHHH,,,,EEEEQQQQ>>>>(const value_type* first,
  98.                const value_type* last);
  99.  
  100.  
  101.      Constructs a map by copying elements from the array of vvvvaaaalllluuuueeee____ttttyyyyppppeeee pairs
  102.      pointed to by ffffiiiirrrrsssstttt, up to, but not including, the pair pointed to by
  103.      llllaaaasssstttt.
  104.  
  105. PPPPuuuubbbblllliiiicccc MMMMeeeemmmmbbbbeeeerrrr OOOOppppeeeerrrraaaattttoooorrrrssss
  106.               RWTValHashMap<K,T,H,EQ>&
  107.           ooooppppeeeerrrraaaattttoooorrrr====(const RWTValHashMap<K,T,H,EQ>& m);
  108.           RWTValHashMap<K,T,H,EQ>&
  109.           ooooppppeeeerrrraaaattttoooorrrr====(const rw_hashmap<K,T,H,EQ>& m);
  110.  
  111.  
  112.      Destroys all elements of self and replaces them by copying all
  113.      associations from mmmm.
  114.  
  115.               bool
  116.           ooooppppeeeerrrraaaattttoooorrrr========(const RWTValHashMap<K,T,H,EQ>& m) const;
  117.           bool
  118.           ooooppppeeeerrrraaaattttoooorrrr========(const rw_hashmap<K,T,H,EQ>& m) const;
  119.  
  120.  
  121.      Returns ttttrrrruuuueeee if self compares equal to mmmm, otherwise returns ffffaaaallllsssseeee.  Two
  122.      collections are equal if both have the same number of entries, and
  123.      iterating through both collections produces, in turn, individual pairs
  124.      that compare equal to each other.
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMaaaapppp((((3333CCCC++++++++))))                                        RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMaaaapppp((((3333CCCC++++++++))))
  137.  
  138.  
  139.  
  140.               T&
  141.           ooooppppeeeerrrraaaattttoooorrrr[[[[]]]](const K& key);
  142.  
  143.  
  144.      Looks up kkkkeeeeyyyy and returns a reference to its associated item.  If the key
  145.      is not in the dictionary, then it will be added with an associated item
  146.      provided by the default constructor for type TTTT.
  147.  
  148. PPPPuuuubbbblllliiiicccc MMMMeeeemmmmbbbbeeeerrrr FFFFuuuunnnnccccttttiiiioooonnnnssss
  149.               void
  150.           aaaappppppppllllyyyy(void (*fn)(const K&, T&, void*),void* d);
  151.           void
  152.           aaaappppppppllllyyyy(void (*fn)(const K&,const T&,void*),void* d) const;
  153.  
  154.  
  155.      Applies the user-defined function pointed to by ffffnnnn to every association
  156.      in the collection.  This function must have one of the prototypes:
  157.  
  158.  
  159.  
  160.  
  161.  
  162.                  void yourfun(const K& key, T& a, void* d);
  163.              void yourfun(const K& key, const T& a,void* d);
  164.  
  165.  
  166.      Client data may be passed through parameter dddd.
  167.  
  168.               void
  169.           aaaappppppppllllyyyyTTTTooooKKKKeeeeyyyyAAAAnnnnddddVVVVaaaalllluuuueeee(void (*fn)(const K&, T&,void*),void* d);
  170.           void
  171.           aaaappppppppllllyyyyTTTTooooKKKKeeeeyyyyAAAAnnnnddddVVVVaaaalllluuuueeee
  172.           (void (*fn)(const K&, const T, void*),void* d) const;
  173.  
  174.  
  175.      This is a deprecated version of the aaaappppppppllllyyyy member above.  It behaves
  176.      exactly the same as aaaappppppppllllyyyy....
  177.  
  178.               iterator
  179.           bbbbeeeeggggiiiinnnn();
  180.           const_iterator
  181.           bbbbeeeeggggiiiinnnn() const;
  182.  
  183.  
  184.      Returns an iterator positioned at the first pair in self.
  185.  
  186.               size_type
  187.           ccccaaaappppaaaacccciiiittttyyyy() const;
  188.  
  189.  
  190.      Returns the number of buckets(slots) available in the underlying hash
  191.      representation.  See rrrreeeessssiiiizzzzeeee below.
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMaaaapppp((((3333CCCC++++++++))))                                        RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMaaaapppp((((3333CCCC++++++++))))
  203.  
  204.  
  205.  
  206.               void
  207.           cccclllleeeeaaaarrrr();
  208.  
  209.  
  210.      Clears the collection by removing all items from self.  Each key and its
  211.      associated item will have its destructor called.
  212.  
  213.               bool
  214.           ccccoooonnnnttttaaaaiiiinnnnssss(const K& key) const;
  215.  
  216.  
  217.      Returns ttttrrrruuuueeee if there exists a key jjjj in self that compares equal to kkkkeeeeyyyy;
  218.      otherwise returns ffffaaaallllsssseeee.
  219.  
  220.               bool
  221.           ccccoooonnnnttttaaaaiiiinnnnssss(bool (*fn)(const_reference,void*), void* d) const;
  222.  
  223.  
  224.      Returns ttttrrrruuuueeee if there exists an association aaaa in self such that the
  225.      expression ((((((((****ffffnnnn))))((((aaaa,,,,dddd)))))))) is ttttrrrruuuueeee, otherwise returns ffffaaaallllsssseeee.  ffffnnnn points to a
  226.      user-defined tester function which must have prototype:
  227.  
  228.  
  229.  
  230.  
  231.  
  232.                  bool yourTester(const_reference a, void* d);
  233.  
  234.  
  235.      Client data may be passed through parameter dddd.
  236.  
  237.               iterator
  238.           eeeennnndddd();
  239.           const_iterator
  240.           eeeennnndddd() const;
  241.  
  242.  
  243.      Returns an iterator positioned "just past" the last association in self.
  244.  
  245.               size_type
  246.           eeeennnnttttrrrriiiieeeessss() const;
  247.  
  248.  
  249.      Returns the number of associations in self.
  250.  
  251.               float
  252.           ffffiiiillllllllRRRRaaaattttiiiioooo() const;
  253.  
  254.  
  255.      Returns the ratio eeeennnnttttrrrriiiieeeessss(((())))/ccccaaaappppaaaacccciiiittttyyyy(((()))).
  256.  
  257.  
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMaaaapppp((((3333CCCC++++++++))))                                        RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMaaaapppp((((3333CCCC++++++++))))
  269.  
  270.  
  271.  
  272.               bool
  273.           ffffiiiinnnndddd(const K& key, K& r) const;
  274.  
  275.  
  276.      If there exists a key jjjj in self that compares equal to kkkkeeeeyyyy, assigns jjjj to
  277.      rrrr and returns ttttrrrruuuueeee.  Otherwise, returns ffffaaaallllsssseeee and leaves the value of rrrr
  278.      unchanged.
  279.  
  280.               bool
  281.           ffffiiiinnnndddd(bool (*fn)(const_reference,void*),void* d,
  282.                           pair<K,T>& r) const;
  283.  
  284.  
  285.      If there exists an association aaaa in self such that the expression
  286.      ((((((((****ffffnnnn))))((((aaaa,,,,dddd)))))))) is ttttrrrruuuueeee, assigns aaaa to rrrr and returns ttttrrrruuuueeee.  Otherwise,
  287.      returns ffffaaaallllsssseeee and leaves the value of kkkk unchanged.  ffffnnnn points to a user-
  288.      defined tester function which must have prototype:
  289.  
  290.  
  291.  
  292.  
  293.  
  294.                  bool yourTester(const K& a, void* d);
  295.  
  296.  
  297.      Client data may be passed through parameter dddd.
  298.  
  299.               bool
  300.           ffffiiiinnnnddddVVVVaaaalllluuuueeee(const K& key, T& r) const;
  301.  
  302.  
  303.      If there exists a key jjjj in self that compares equal to kkkkeeeeyyyy, assigns the
  304.      item associated with jjjj to rrrr and returns ttttrrrruuuueeee.  Otherwise, returns ffffaaaallllsssseeee
  305.      and leaves the value of rrrr unchanged.
  306.  
  307.               bool
  308.           ffffiiiinnnnddddKKKKeeeeyyyyVVVVaaaalllluuuueeee(const K& key, K& kr, T& tr) const;
  309.  
  310.  
  311.      If there exists a key jjjj in self that compares equal to kkkkeeeeyyyy, assigns jjjj to
  312.      kkkkrrrr, assigns the item associated with jjjj to trrrr,,,, and returns ttttrrrruuuueeee.
  313.      Otherwise, returns ffffaaaallllsssseeee and leaves the values of kkkkrrrr and ttttrrrr unchanged.
  314.  
  315.               bool
  316.           iiiinnnnsssseeeerrrrtttt(const K& key, const T& a);
  317.  
  318.  
  319.      Adds kkkkeeeeyyyy with associated item aaaa to the collection.  Returns ttttrrrruuuueeee if the
  320.      insertion is successful, otherwise returns ffffaaaallllsssseeee.  The function will
  321.      return ttttrrrruuuueeee unless the collection already holds an association with the
  322.      equivalent key.
  323.  
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMaaaapppp((((3333CCCC++++++++))))                                        RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMaaaapppp((((3333CCCC++++++++))))
  335.  
  336.  
  337.  
  338.               bool
  339.           iiiinnnnsssseeeerrrrttttKKKKeeeeyyyyAAAAnnnnddddVVVVaaaalllluuuueeee(const K& key,const T& a);
  340.  
  341.  
  342.      This is a deprecated version of the iiiinnnnsssseeeerrrrtttt member above.  It behaves
  343.      exactly the same as iiiinnnnsssseeeerrrrtttt....
  344.  
  345.               bool
  346.           iiiissssEEEEmmmmppppttttyyyy() const;
  347.  
  348.  
  349.      Returns ttttrrrruuuueeee if there are no items in the collection, ffffaaaallllsssseeee otherwise.
  350.  
  351.               size_type
  352.           ooooccccccccuuuurrrrrrrreeeennnncccceeeessssOOOOffff(const K& key) const;
  353.  
  354.  
  355.      Returns the number of keys jjjj in self that compare equal to kkkkeeeeyyyy.
  356.  
  357.               size_type
  358.           ooooccccccccuuuurrrrrrrreeeennnncccceeeessssOOOOffff(bool (*fn)(const_reference,void*),void* d) const;
  359.  
  360.  
  361.      Returns the number of associations aaaa in self such that the
  362.      expression((((((((****ffffnnnn))))((((aaaa,,,,dddd)))))))) is ttttrrrruuuueeee.   ffffnnnn points to a user-defined tester
  363.      function which must have prototype:
  364.  
  365.  
  366.  
  367.  
  368.  
  369.                  bool yourTester(const_reference a, void* d);
  370.  
  371.  
  372.      Client data may be passed through parameter dddd.
  373.  
  374.               bool
  375.           rrrreeeemmmmoooovvvveeee(const K& key);
  376.  
  377.  
  378.      Removes the first association with key jjjj in self such that the expression
  379.      ((((jjjj ======== kkkkeeeeyyyy)))) is ttttrrrruuuueeee and returns ttttrrrruuuueeee.  Returns ffffaaaallllsssseeee if there is no such
  380.      association.
  381.  
  382.               bool
  383.           rrrreeeemmmmoooovvvveeee(bool (*fn)(const_reference,void*), void* d);
  384.  
  385.  
  386.      Removes the first association aaaa in self such that the expression
  387.      ((((((((****ffffnnnn))))((((aaaa,,,,dddd)))))))) is ttttrrrruuuueeee and returns ttttrrrruuuueeee.  Returns ffffaaaallllsssseeee if there is no such
  388.      element.  ffffnnnn points to a user-defined tester function which must have
  389.      prototype:
  390.  
  391.  
  392.  
  393.                                                                         PPPPaaaaggggeeee 6666
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400. RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMaaaapppp((((3333CCCC++++++++))))                                        RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMaaaapppp((((3333CCCC++++++++))))
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408.                  bool yourTester(const_reference a, void* d);
  409.  
  410.  
  411.      Client data may be passed through parameter dddd.
  412.  
  413.               size_type
  414.           rrrreeeemmmmoooovvvveeeeAAAAllllllll(const K& key);
  415.  
  416.  
  417.      Removes all elements jjjj in self that compare equal to kkkkeeeeyyyy.  Returns the
  418.      number of items removed.
  419.  
  420.               size_type
  421.           rrrreeeemmmmoooovvvveeeeAAAAllllllll(bool (*fn)(const_reference,void*), void* d);
  422.  
  423.  
  424.      Removes all associations aaaa in self such that the expression
  425.      ((((((((****ffffnnnn))))((((aaaa,,,,dddd))))))))is ttttrrrruuuueeee.  Returns the number of items removed.  ffffnnnn points to
  426.      a user-defined tester function which must have prototype:
  427.  
  428.  
  429.  
  430.  
  431.  
  432.                  bool yourTester(const_reference a, void* d);
  433.  
  434.  
  435.      Client data may be passed through parameter dddd.
  436.  
  437.               void
  438.           rrrreeeessssiiiizzzzeeee(size_type sz);
  439.  
  440.  
  441.      Changes the capacity of self by creating a new hashed map with a capacity
  442.      of  sssszzzz .  rrrreeeessssiiiizzzzeeee copies every element of self into the new container and
  443.      finally swaps the internal representation of the new container with the
  444.      internal representation of sssseeeellllffff.
  445.  
  446.               rw_hashmap<K,T,H,EQ>&
  447.           ssssttttdddd();
  448.           const rw_hashmap<K,T,H,EQ>&
  449.           ssssttttdddd() const;
  450.  
  451.  
  452.      Returns a reference to the underlying C++-standard collection that serves
  453.      as the implementation for self.  This reference may be used freely,
  454.      providing access to the C++-standard interface as well as
  455.      interoperability with other software components that make use of the
  456.  
  457.  
  458.  
  459.                                                                         PPPPaaaaggggeeee 7777
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466. RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMaaaapppp((((3333CCCC++++++++))))                                        RRRRWWWWTTTTVVVVaaaallllHHHHaaaasssshhhhMMMMaaaapppp((((3333CCCC++++++++))))
  467.  
  468.  
  469.  
  470.      C++-standard compliant collections.
  471.  
  472. RRRReeeellllaaaatttteeeedddd GGGGlllloooobbbbaaaallll OOOOppppeeeerrrraaaattttoooorrrrssss
  473.               RWvostream&
  474.           ooooppppeeeerrrraaaattttoooorrrr<<<<<<<<(RWvostream& strm,
  475.                  const RWTValHashMap<K,T,H,EQ>& coll);
  476.           RWFile&
  477.           ooooppppeeeerrrraaaattttoooorrrr<<<<<<<<(RWFile& strm, const RWTValHashMap<K,T,H,EQ>& coll);
  478.  
  479.  
  480.      Saves the collection ccccoooollllllll onto the output stream ssssttttrrrrmmmm, or a reference to
  481.      it if it has already been saved.
  482.  
  483.               RWvistream&
  484.           ooooppppeeeerrrraaaattttoooorrrr>>>>>>>>(RWvistream& strm, RWTValHashMap<K,T,H,EQ>& coll);
  485.           RWFile&
  486.           ooooppppeeeerrrraaaattttoooorrrr>>>>>>>>(RWFile& strm, RWTValHashMap<K,T,H,EQ>& coll);
  487.  
  488.  
  489.      Restores the contents of the collection ccccoooollllllll from the input stream ssssttttrrrrmmmm.
  490.  
  491.               RWvistream&
  492.           ooooppppeeeerrrraaaattttoooorrrr>>>>>>>>(RWvistream& strm, RWTValHashMap<K,T,H,EQ>*& p);
  493.           RWFile&
  494.           ooooppppeeeerrrraaaattttoooorrrr>>>>>>>>(RWFile& strm, RWTValHashMap<K,T,H,EQ>*& p);
  495.  
  496.  
  497.      Looks at the next object on the input stream ssssttttrrrrmmmm and either creates a
  498.      new collection off the heap and sets pppp to point to it, or sets pppp to point
  499.      to a previously read instance.  If a collection is created off the heap,
  500.      then you are responsible for deleting it.
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.                                                                         PPPPaaaaggggeeee 8888
  526.  
  527.  
  528.  
  529.